fix(opencode): close Linux stop orphan windows - #460
Conversation
|
分流结论:部分落地,但我没能确立 CLI wrapper 那一侧,所以不关,交回作者。 已落地的部分( 节点侧「精确身份 + TERM-only + 身份不匹配就拒绝」这组性质已经有了。 我没能确立的部分:本 PR 的核心文件 所以下面这个问题我回答不了,需要你或 owner 来定:
如果是前者,本 PR 可以关(性质已被通用模块覆盖);如果是后者,这个 PR 修的洞还在, 我按「不能确立就不关」处理。另外注意 #715(opencode-cli 在本机不可用,PATH 上是 2025 年的 0.0.55) |
|
Current-main semantic triage (read-only; no code or production change): This draft should remain open. It is not safely superseded by current Evidence:
Disposition: preserve this PR as design/evidence. Any revival should be a fresh current-main implementation that re-establishes the two unresolved platform/race gates and proves whether the Linux supervisor pieces are still needed. Do not hand-resolve this old branch or close it as superseded without that proof. |
|
2026-08-13 maintenance triage (read-only): KEEP DRAFT / DO-NOT-MERGE; not superseded by current main. Evidence against a premature “already covered” close: current main The branch is also based on a long historical chain and carries 34 files / ~3.8k added lines, so any future revival must be rebuilt against current main with exact source/report coordinates and fresh Linux + true Windows evidence. No close, merge, rebase, production, or package action was taken in this triage. |
CI 红的诊断:5 处违规确实由本 PR 引入(只读核查,未改本 PR 任何内容)失败 check main 是干净的 → 这 5 处是本 PR 带进来的,不是历史遗留,也不是守卫误报。 守卫给的改法(它自己打出来的)
🔴 记一条我自己差点犯的错我第一次是用自己写的正则扫全仓,量出「main 上有 11 处」,差点据此报「守卫在 main 上就该红、 拿仓库不用的口径去量,得到的是零信息结论。 最后是跑守卫脚本本身才拿到可用的答案。 另外本 PR 目前 |
Outcome
This draft closes the Linux OpenCode stop-orphan window and records the
2.3.0-preview.35/2.5.0-preview.27evidence pair. It does not publish either package or change any dist-tag.Root cause
The old launcher could time out and SIGKILL only the
agent-nodewrapper while its detached OpenCode ACP process survived. A second race allowed a turn queued before SIGTERM to enter the OpenCode opening path after shutdown had already cleaned the first client, leaving a credential-scoped launch root behind.Linux validation on commit
1f1f04d9All seven RFC-029/OpenCode Docker gates passed on this exact source tree:
opencode-ai@1.18.1kernel-live — PASS, zero post-stop PIDsgit diff --checkis clean. The staged secret scan found only explicitly synthetic test fixtures; no real credential was added.DO NOT MERGE / promote remains frozen
This is intentionally a draft. Review found two unresolved blockers:
/proc. Windows/macOS bound stop therefore fails closed rather than completing successfully. A platform design plus real Windows validation is required.Required before merge/promote: resolve both blockers, rerun affected gates on the new head, pass true Windows validation, and review the draft CI (especially the hard
rename-ghost-gate).